// 排序相关api
import { Next } from '../app'
import { IGroupMessageEvent } from '../../interface/bot.interface'
import { format, wrapCommandFn } from '../../utils'
import ErrorType from '../../constants/errorType'
import { getRank } from '../../request/screeps'

/**
 * 获取指定用户排名
 * @param user 用户名
 */
export const lookWorldRank = wrapCommandFn(
    async (e: IGroupMessageEvent, next: Next) => {
        try {
            const res = await getRank('world', e.args[0])
            if (res.data.ok) {
                const list = res.data.list
                const time = Math.min(Number(e.args[1]), list.length)
                const strs = [`[${e.args[0]}]最近${time}个月的排名：`]
                if (time) {
                    while (list.length && time) {
                        strs.push(`${(list.pop()?.rank || 0) + 1}`)
                    }
                    e.reply(`[${e.args[0]}]的世界排名为：${res.data.list}`)
                } else {
                    e.reply(`[${e.args[0]}]的世界排名为：${(list.pop()?.rank || 0) + 1}`)
                }
            }
            next()
        } catch (error) {
            e.group.sendMsg(ErrorType.REQUEST_ERROR)
        }
    },
    () => {
        return format('/rank [user] [time]', ['user: 用户名', 'time: 最近几个月，默认为1'], '获取指定用户排名')
    },
)
